package wei.xinya.core.polymorphic;

/**
 * 多态
 */
public class Test {

    public static void main(String[] args) {
        show(new Cat()); //  Cat 对象调用 show 方法
        show(new Dog()); //  Dog 对象调用 show 方法

        Cat a = new Cat(); // 向上转型
        a.eat(); // 调用的是 Cat  eat
        a.work(); // 调用的是 Cat  work
    }

    private static void show(Animal a) {
        a.eat();
        // 类型判断
        if (a instanceof Cat) { // 猫做的事
            Cat c = (Cat) a;
            c.work();
        } else if (a instanceof Dog) { // 狗做的事
            Dog c = (Dog) a;
            c.work();
        }
    }
}
